####################################################
# Generic makefile - 万能Makefile
# for compiling and linking C++ projects on Linux 
# Author: George Foot  Modified:Jackie Lee
####################################################
### Customising
#
# Adjust the following if necessary; EXECUTABLE is the target
# executable's filename, and LIBS is a list of libraries to link in
# (e.g. alleg, stdcx, iostr, etc). You can override these on make's
# command line of course, if you prefer to do it that way.
#
#
EXECUTABLE := PRO   	# 可执行文件名
LIBDIR:=              	# 静态库目录
LIBS := 			 	# 静态库文件名
INCLUDES:= ./include  	# 头文件目录
SRCDIR:= ./src ./src/sub  # 除了当前目录外，其他的源代码文件目录
OBJ_PATH := obj
#
# # Now alter any implicit rules' variables if you like, e.g.:

CC:=g++
CFLAGS := -g -Wall -O3
CPPFLAGS := $(CFLAGS)
CPPFLAGS += $(addprefix -I,$(INCLUDES))
CPPFLAGS += -MMD
#
# # The next bit checks to see whether rm is in your djgpp bin
# # directory; if not it uses del instead, but this can cause (harmless)
# # `File not found' error messages. If you are not using DOS at all,
# # set the variable to something which will unquestioningly remove
# # files.
#

RM-F := rm -f


# # You shouldn't need to change anything below this point.

SRCS := $(wildcard *.c*) $(wildcard $(addsuffix /*.c*, $(SRCDIR)))
OBJS := $(addsuffix .o,$(basename $(SRCS)))
DEPS := $(patsubst %.o,%.d,$(OBJS))
MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS))
MISSING_DEPS_SOURCES := $(wildcard $(patsubst %.d,%.c*,$(MISSING_DEPS)))


.PHONY : all deps objs clean veryclean rebuild info

all: $(EXECUTABLE)

deps : $(DEPS)

objs : $(OBJS)

clean :
	@$(RM-F) *.o
	@$(RM-F) *.d
	@$(RM-F) $(OBJS) 
	@$(RM-F) $(DEPS)
# 打印
	@echo $(RM-F) *.o
	@echo $(RM-F) *.d
	@echo $(RM-F) $(OBJS) 
	@echo $(RM-F) $(DEPS)
distclean: clean
	@$(RM-F) $(EXECUTABLE)
	@echo $(RM-F) $(EXECUTABLE)

rebuild: veryclean all
ifneq ($(MISSING_DEPS),)
$(MISSING_DEPS) :
	@$(RM-F) $(patsubst %.d,%.o,$@)
endif
-include $(DEPS)
$(EXECUTABLE) : $(OBJS)
	$(CC) -o $(EXECUTABLE) $(OBJS) $(addprefix -L,$(LIBDIR)) $(addprefix -l,$(LIBS))

info:
	@echo SRCS: $(SRCS)
	@echo OBJS: $(OBJS)
	@echo DEPS: $(DEPS)
	@echo MISSING_DEPS: $(MISSING_DEPS)
	@echo MISSING_DEPS_SOURCES: $(MISSING_DEPS_SOURCES)
